﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DDD {

    /// <summary>
    /// 物理演算クラス
    /// </summary>
    /// <remarks>
    /// このクラスはデバイス依存です。
    /// 現状でこのクラスを使ってコリジョン検出を行うぐらいしか決まっていません。
    /// </remarks>
    public class Physics3D {

        #region Field
        private Physics3D singlton = new Physics3D ();
        #endregion

        #region Constructor
        /// <summary>
        /// コンストラクター
        /// </summary>
        private Physics3D () {
        }

        #region Property
        #endregion
        
        #endregion
        
        #region Method
        /// <summary>
        /// Physics3Dの唯一のインスタンスを取得する
        /// </summary>
        /// <returns>
        /// <see cref="Physics3D"/>クラスはシングルトンパターンを使用します。
        /// </returns>
        public Physics3D GetInstance () {
            return singlton;
        }

        /// <summary>
        /// コリジョンを解決します
        /// </summary>
        /// <remarks>
        /// シーンのコリジョンを計算しコリジョンがあればOnCollideEnter()など
        /// 適切なコールバック関数を呼び出します。
        /// </remarks>
        /// <param name="world">シーン</param>
        public void Collide (World world) {
        }

        /// <summary>
        /// 現在のオブジェクトの状態を表す文字列を返します。
        /// </summary>
        /// <returns>現在のオブジェクトを説明する文字列</returns>
        public override string ToString () {
            return string.Format("Physics3D: ");
        }
        #endregion
        
    }
}
